/*
 * thread_pool.h
 *
 *  Created on: 2014年8月1日
 *      Author: chens
 */

#ifndef THREAD_POOL_H_
#define THREAD_POOL_H_

#define THREAD_POOL_MAX_CAPACITY (1024)

struct thread_pool_t;

/*
 * @brief	线程池中，工作函数的原型，执行一个工作即调用该类型的函数
 */
typedef void*(*thread_pool_work)(void*);

/*
 * @brief	创建一个线程池
 * @param	capacity：线程池的容量
 * @return	成功返回非NULL，失败返回NULL
 */
struct thread_pool_t * thread_pool_create(int capacity);

/*
 * @brief	销毁线程池
 * @param	线程池指针
 * @return	0表示成功，非0表示失败
 */
int thread_pool_destroy(struct thread_pool_t *pool);

/*
 * @brief	添加一个工作到线程池中
 * @param	pool：通过thread_pool_create创建的线程池
 * 		work：工作函数指针
 * 		arg：传递给工作函数指针的参数
 */
int thread_pool_add_work(struct thread_pool_t *pool, thread_pool_work work,
		void *arg);



#endif /* THREAD_POOL_H_ */
